<?php

require_once 'MainPageWidget.php';
class CreateBtnWidget extends MainPageWidget
{
	public $title = 'Тема дня'; // анонсирует запись / или произвольный текст
	public $item_oid = NULL; // oid анносируемой записи
	public $header = NULL; // заголовок аннонсируемой записи (выбирается из oid или вводится юзером)
	public $body = NULL; // текст аннонсируемой записи (выбирается из oid или вводится юзером)

	var $use_doctypes = NULL; // м.б. array() со списком допустимых типов документов

	public function isShowCreateItemBtn() {
		$show_button = false;
		$aa = $this->acl_assistant;
		// решим, выводить ли нам кнопку "Создать запись"
		if ( isset($this->params['tdi_url']) ) {
			// мы в разделе - проверяем можно ли в него писать
			if ($aa->is_granted(array('item_create', 'item_create_premod'))) $show_button = true;
		} else {
			// мы в общей ленте - вывести кнопку если в сообщество дан доступ на запись
			$aa->getAvailableOperations($aa->acl_data['comity_oid']);
			if ($aa->is_granted(array('item_create'))) {
				$show_button = true;
			}

		}

		return $show_button;
	}


	/**
	 * getCurrentTdi вернуть структуру данных для текущего раздела
	 *
	 * @return void
	 */
	public function getCurrentTdi ()
	{
		$tdi = NULL;

		$tdi_oid = ($this->parent instanceof Action_Community_FeedHandler) // метод getParam() существует лишь тут
		?	$this->parent->getParam('current_tdi_oid')
		: NULL;

		if ($tdi_oid) {
			$tdi_model = $this->ctx->mm->getModel("Tdi");
			$tdi = $tdi_model->getTdi($tdi_oid);
		}

		return $tdi;
	} // end of method getCurrentTdi

	public function Render()
	{
		// сформируем меню для создания документов различных типов

		// список возможных типов документов
		//$doctypes = array("doc", "link", "image", "file");
		$doctypes = $this->ctx->doctypes;

		// простой вывод данных из конфига
		$this->is_have_rights = $this->isShowCreateItemBtn();
		$this->ctx->rh->UseClass("RL_URLGenerator");
		$params = $this->params;
		//		unset($params["path"]);
		$params['path'] = 'createitem';
		if ( !isset($params['tdi_url']) ) {
			$params['tdi_url'] = '';
		}

		// сформируем пункты меню в общем списке
		$menu = array();
		$ug = new RL_URLGenerator($this->ctx->rh->router->getRule("createitem_type"));
		$ug->setRouter($this->ctx->rh->router);
		foreach ($doctypes as $doctype=>$item) {
			if (isset($this->use_doctypes) && !in_array($doctype, $this->use_doctypes)) {
				// force doctype not acceptable
				continue;
			}
			$params['doctype_url'] = $doctype;
			$ug->setParams($params);
			$url = $ug->generateUrl();

			$mi = array();
			$mi['doctype'] = $doctype;
			$mi['type'] = $item;
			$mi['url'] = $url;
			$menu[$doctype] = $mi;
		}
		// теперь в $menu список пунктов меню

		// выделим пункт меню, чей тип документа совпадает с
		// типом документа по умолчанию для текущего раздела (если есть)
		// иначе 'doc'
		$tdi = $this->getCurrentTdi();
		if ($tdi) {
			$main_doctype = $tdi->data['itype'];
		} else {
			$main_doctype = 'doc';
		}
		if (isset($this->use_doctypes) && !in_array($main_doctype, $this->use_doctypes)) {
			$main_doctype = $this->use_doctypes[0];
		}

		// тип документа по умолчанию
		$this->main_doctype = $menu[$main_doctype];
		// остальные типы документов (будут отображаться в раскрывающемся списке)
		$this->other_doctypes = $menu;
		unset($this->other_doctypes[$main_doctype]);

		// render RSS меню
		if ($w_rss = $this->getWidgetsByName('RssWidget')) {
			$this->rss = $w_rss[0];
		}

		return $this;
	}


	public function beforeUpdateSettings (&$config)
	{
	} // end of method beforeUpdateSettings

}

